//Jai Shree Ram
#include <bits/stdc++.h>
#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/tree_policy.hpp>
using namespace std;
using namespace __gnu_pbds;
#define int long long int
#define pb push_back
#define vi vector<int>
#define endl "\n"
#define all(p) p.begin(), p.end()
#define rep(i,l,r) for(int i=l;i<r;i++)
#define pin pair<int,int>
#define vpin vector<pin>
#define yes() cout<<"YES"<<endl
#define no() cout<<"NO"<<endl
const int N = 1e9+7;
const int M = 1e6+1;
int is_prime[M];
void sieve()
{
int maxN=1e6;
for(int i=1;i<=maxN;i++) is_prime[i]=1;
is_prime[0]=is_prime[1]=0;
for(int i=2;i*i<=maxN;i++)
{
if(is_prime[i])
{
for(int j=i*i;j<=maxN;j+=i)
is_prime[j]=0;
}
}
}
int power(int x,int n)
{
int var = 1;
while(n>0)
{
if(n&1)
{
var = var*x;
n--;
}
else
{
x*=x;
n/=2;
}
}
return var;
}
int binary_search(vector<int>&v,int n,int x)
{
int low = 0;
int high = n-1;
int mid;
while(high-low>1)
{
mid = (low+high)/2;
if(x==v[mid])
return -1;
else if(x>v[mid])
{
low = mid + 1;
}
else if(x<v[mid])
{
high = mid-1;
}
}
if(x==v[high]||x==v[low])
return -1;
else
{
if(x>v[high])
return high+1;
else if(x<v[low])
return low;
else
return low+1;
}
}
int powermod(int a, int b, int m)
{
if (b == 0) return 1;
int k = powermod(a, b / 2, m);
k = k * k;
k %= m;
if (b & 1) k = (k * a) % m ;
return k;
}
int inverse(int a, int mod) {
return powermod(a, mod - 2, mod);
}
int kadane(vector<int>&v,int n)
{
int current =0,maximum=0;
for(int i=0;i<n;i++)
{
current+=v[i];
if(current<0)
current=0;
maximum = max(maximum,current);
}
return maximum;
}
int32_t main() {
// your code goes here
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int t;
cin>>t;
while(t--)
{
int n,wi;
cin>>n>>wi;
vi w(n);
rep(i,0,n)
cin>>w[i];
int index = -1;
rep(i,0,n)
{
if(w[i]<=wi&&w[i]>=(wi+1)/2)
{
index = i;
break;
}
}
if(index!=-1)
cout<<1<<endl<<index+1<<endl;
else
{
vpin weigh;
rep(i,0,n)
{
if(w[i]<(wi+1)/2)
{
weigh.pb({w[i],i});
}
}
// sort(all(weigh));
int x = weigh.size();
int sum=0;
vi ind;
rep(i,0,x)
{
sum+=weigh[i].first;
int num = weigh[i].second;
ind.pb(num);
if(sum>=(wi+1)/2)
break;
}
if(sum>=(wi+1)/2)
{
cout<<ind.size()<<endl;
rep(i,0,ind.size())
cout<<ind[i]+1<<" ";
cout<<endl;
}
else
cout<<-1<<endl;
}
}
return 0;
}
1301A - Three Strings | 460A - Vasya and Socks |
1624C - Division by Two and Permutation | 1288A - Deadline |
1617A - Forbidden Subsequence | 914A - Perfect Squares |
873D - Merge Sort | 1251A - Broken Keyboard |
463B - Caisa and Pylons | 584A - Olesya and Rodion |
799A - Carrot Cakes | 1569B - Chess Tournament |
1047B - Cover Points | 1381B - Unmerge |
1256A - Payment Without Change | 908B - New Year and Buggy Bot |
979A - Pizza Pizza Pizza | 731A - Night at the Museum |
742A - Arpa’s hard exam and Mehrdad’s naive cheat | 1492A - Three swimmers |
1360E - Polygon | 1517D - Explorer Space |
1230B - Ania and Minimizing | 1201A - Important Exam |
676A - Nicholas and Permutation | 431A - Black Square |
474B - Worms | 987B - High School Become Human |
1223A - CME | 1658B - Marin and Anti-coprime Permutation |